package jt.classic.system.workflow;

import org.limp.basework.SimpleBean;

import java.util.List;


/**
 * 流程接口
 *
 * @author bizkit
 *
 */
public interface WFlow extends SimpleBean {
    public final static String CUSTOM = "custom";
    public final static String FREE = "free";

    /**
     * 流程ID
     * @return String
     */
    public String id();

    /**
     * 流程唯一标识
     * @return String
     */
    public String ikey();

    /**
     * 流程名称
     * @return
     */
    public String iname();

    /**
     * 流转类型{固定模式流转->'custom',自由模式流转->'free'}
     * @return
     */
    public String itype();

    /**
     * 流程说明
     * @return
     */
    public String imemo();

    /**
     * 流程处理对象列表
     * @return List
     */
    public List iobjects();

    /**
     * 流程默认处理对象
     * @return WObject
     */
    public WObject iobject();

    /**
     * 流程环节最大NO
     *
     * @return
     */
    public int imaxstepno();

    /**
     * 流程环节列表
     * @return List
     */
    public List isteps();

    /**
     * 流程环节
     * @param postid
     * @return
     */
    public WStep istep(String id);

    /**
     * 开始环节
     * @return WStep
     */
    public WStep istep4start();

    /**
     * 结束环节
     * @return WStep
     */
    public WStep istep4end();

    /**
     * 流程环节XML结构数据
     * @param type 支持的显示模式（null为XiorkFlow显示模式）
     * @return String
     */
    public String toXML(String type);

    /**
     * 空流程(没有定义任何环节)
     * @return
     */
    public boolean isEmpty();
}
